51单片机的储存空间
三个逻辑空间、四个物理空间
(1)片内数据存储器(2)片内程序存储器
(3)片外数据存储器(4)片外程序存储器
一、RAM 数据空间
Data Memory Space RAM 作为数据储存器
数据空间是单片机中用于存储变量、临时数据和堆栈信息的区域
graph LR RAM --> 片内 & 片外 片内 --> 1[低128字节] & 2[高128字节] 1 --> 11["工作寄存器区00H~1FH"] & 12["位寻址区20H~2FH"] & 13["用户RAM区30H~7FH"] 2 -->21["特殊功能寄存器SFR 80H~FFH"]
1.1 片内 RAM
51 单片机的内部 RAM 分为几个不同的区域,每个区域都有特定的用途和地址范围:
低 128 字节
-
寄存器组(Register Banks):
通用工作寄存器区- 地址范围:00H - 1FH
- 包含 4 个 8 位通用寄存器组(R0-R7),
每个寄存器组占用 8 个字节,共计 32 个字节。 - 寄存器组可以通过 RS0 和 RS1 位在 PSEN(程序状态字寄存器中的位 2)和 PSW(程序状态字寄存器)中的位 0 和位 1 来选择。
-
位地址区域(Bit Addressable Area):
可位寻址 RAM 区- 地址范围:20H - 2FH
- 包含 128 位的可位寻址区域,每个位占用一个地址,用于位操作指令。
-
变量存储区域(General Purpose RAM):
通用 RAM 区- 地址范围:30H - 7FH
- 用于存储程序中的变量和临时数据。
高 128 字节
控制具体硬件的工作,有特殊的功能。具体见:特殊功能寄存器。
1.2 片外 RAM
DPTR
数据指针:用于片外数据存储器地址的指针,一般当为间接寻址寄存器使用,指向外部地址
64KB 16 位字节 DPL
DPH
。
MOV DPTR,#0650H ;设置片外地址指针0650H
MOV R0,#30H ;片内30H
MOV A,@R0 ; 间接寻址,传30H中数据给累加器A
MOVX @DPTR,A ;将累加器的值给片外的0650H
外部 RAM 是通过外部接口连接到 51 单片机的内存区域,它可以提供比内部 RAM 更大的存储空间。
外部 RAM 的地址范围取决于具体的硬件设计和连接的内存大小。
通常,外部 RAM 的地址由单片机的地址线直接给出,而数据则通过数据总线进行传输。
二、ROM 程序空间
Program Memory Space ROM 作为程序储存器
程序空间是单片机中用于存储程序代码和常量数据的区域,存放编好的程序和表格常数, 采用 PC 程序计数器寻址。
PC
程序计数器:用于存放下一条要执行的指令地址 64KB
( 16 位字节
编译和烧录过程将汇编代码转换成机器代码,然后这个机器代码被放置到单片机的程序空间里。在 8051 单片机中,程序空间通常是只读的,意味着写入程序空间的数据在单片机上电后是不可更改的。
2.1 片内 ROM
PC
地址指针指向
7 个特殊的存储器单元 8051中断系统
0000H:复位后程序自动运行的首地址
0003H:外部中断 0 入口地址
000BH:定时器 0 溢出中断入口地址
0013H:外部中断 1 入口地址
001BH:定时器 1 溢出中断入口地址
0023H:串行口中断入口地址
2.2 片外 ROM
PC
地址指针指向